package TestesAutomatizados;

import static org.junit.Assert.assertEquals;

import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import org.junit.Test;

import Controlador.RecuperaItens;
import Entidades.Preco;
import Entidades.Produto;
import Excecoes.ExececaoCategoriaVendedorIncorreta;
import Utils.TransformaStringEmCalendar;

public class TesteRecuperaItens {
	private List<Preco> mockPrecosProduto;
	private Produto mockProduto;
	
	private void configuraPrecos() throws ParseException{
		String[] mockPrecoDatasVigencia = {"10/05/2013","01/06/2013","12/07/2013"};
		String mockPrecoCodigo = "7897123884036";
		double[] mockPrecoValor = {2.0,2.1,2.5};
		mockPrecosProduto = new ArrayList<Preco>();
		for(int i=0; i<3;i++){
			Calendar mockPrecoDataVingencia = TransformaStringEmCalendar.transformaStringEmCalendar(mockPrecoDatasVigencia[i]);
			mockPrecosProduto.add(new Preco(mockPrecoDataVingencia,mockPrecoCodigo,mockPrecoValor[i]));
		}
	}
	
	private void configuraProduto(){
		String mockProdutoCodigo = "7897123884036";
		String mockProdutoNome = "Agua Mineral Prata";
		mockProduto = new Produto(mockProdutoCodigo,mockProdutoNome,mockPrecosProduto);
	}

	@Test
	public void test() throws IOException, ParseException, ExececaoCategoriaVendedorIncorreta {
		RecuperaItens.recuperaItens();
		configuraPrecos();
		configuraProduto();
		for(Produto produto : RecuperaItens.getProdutos().values()){
			assertEquals(mockProduto.getCodigo(),produto.getCodigo());
			assertEquals(mockProduto.getNome(),produto.getNome());
			int i = 0;
			for(Preco preco : produto.getPrecos()){
				Preco mockPreco = mockPrecosProduto.get(i);
				assertEquals(mockPreco.getPreco(),preco.getPreco(),0);
				assertEquals(mockPreco.getDataDeVingencia(),preco.getDataDeVingencia());
				i++;
			}
			break;
		}
	}

}
